#ifndef _FW_RS_
#define _FW_RS_
class FWContentManager;
class FWDirectShow;
class FWTexture;
class Sprite;
class FWSurface;
class RSManager;
#include "GameDefine.h"


class RSManager
{
private:
	static RSManager* _instance;
	//declare resource here!!!	

#pragma region IS_SPRITE
	Sprite* is_go_left;
	Sprite* is_go_right;
	Sprite* is_jump_left;
	Sprite* is_jump_right;	
	Sprite* is_sink;	
	Sprite* is_shoot_left;
	Sprite* is_shoot_right;
	Sprite* is_lie_shoot_left;
	Sprite* is_lie_shoot_right;
#pragma endregion

#pragma region MAP_SPRITE
	Sprite* map1;
	Sprite* map3;
	Sprite* map5;
	Sprite* map1_effect;
	Sprite* map3_effect1;
	Sprite* map3_effect2;
	Sprite* map5_effect;
#pragma endregion

#pragma region PLAYER_SPRITE
	////run
	Sprite* player_go_right;	
	Sprite* player_go_left;	
	Sprite* player_gs_right;
	Sprite* player_gs_left;
	Sprite* player_I;	
	Sprite* player_II;	
	Sprite* player_III;	
	Sprite* player_IV;	

	//jump
	Sprite* player_jump_right;	
	Sprite* player_jump_left;	
	Sprite* player_jump_down_left;
	Sprite* player_jump_down_right;

	//swim
	Sprite* player_swim_left;
	Sprite* player_swim_right;
	Sprite* player_swim_shoot_left;
	Sprite* player_swim_shoot_right;
	Sprite* player_ss_top_right;
	Sprite* player_ss_top_left;
	Sprite* player_ss_I;
	Sprite* player_ss_II;
	Sprite* player_swim_down;

	//stand
	Sprite* player_shoot_right;
	Sprite* player_stand_right;
	Sprite* player_shoot_left;	
	Sprite* player_stand_left;
	Sprite* player_stand_top_right;
	Sprite* player_shoot_top_right;
	Sprite* player_stand_top_left;
	Sprite* player_shoot_top_left;

	//lie
	Sprite* player_lie_left;	
	Sprite* player_lie_right;
	Sprite* player_lie_shoot_left;
	Sprite* player_lie_shoot_right;

	//die
	Sprite* player_die_left;
	Sprite* player_die_right;

#pragma endregion

#pragma region BULLET_SPRITE
	Sprite* bM;	
	Sprite* bR;	
	Sprite* bE;
	Sprite* bL;
	Sprite* grenade;	
#pragma endregion

#pragma region BLOCK_HOUSE_SPRITE
	Sprite* block_house_angle;
	Sprite* block_house_simple;
	Sprite* block_house_start;
#pragma endregion


#pragma region SOLDIER
	Sprite *soldier_left_gun;
	Sprite *soldier_right_gun;
	Sprite *soldier_left_top_gun;
	Sprite *soldier_righ_top_gun;
	Sprite *soldier_left_bottom_gun;
	Sprite *soldier_right_bottom_gun;


	Sprite* soldier2_left;
	Sprite* soldier2_right;
#pragma endregion

#pragma region GIFT
	Sprite* flying_gift;
#pragma endregion

#pragma region EFFECT_SPRITE
	Sprite* damage_brige;	
	Sprite* effect_explde1;
	Sprite* effect_explde2;
#pragma endregion
#pragma region EMBUSHGUN
	Sprite* embushgun_appear;
	Sprite* embushgun_gun;
#pragma endregion

#pragma region DEFENSE_CANON
	Sprite* defenseCannon;
	Sprite* explodeCannon;
#pragma endregion
#pragma region SCENE
	Sprite* memu_background;
	Sprite* option_icon;
#pragma endregion 
#pragma region BOSS
	Sprite* boss;
	Sprite* boss_explode;
	Sprite* boss_eff1;
	Sprite* boss_eff2;
	Sprite* boss_eff3;
	Sprite* boss_eff4;
	Sprite* boss_eff5;
	Sprite* boss_eff6;
	Sprite* boss_eff7;
	Sprite* boss_eff8;
	Sprite* boss_eff9;
	Sprite* boss_eff10;
#pragma endregion

#pragma region World Object
	Sprite* fire;
	Sprite* rock;
#pragma endregion World Object

#pragma region SCUBA_SOLDIER
	Sprite* scuba_soldier;
#pragma endregion SCUBA_SOLDIER

#pragma region ANTI_GRAVITY_SHUTTER
	Sprite* ShutterAppear;
	Sprite* ShutterDisappear;
	Sprite* ShutterWaiting;
#pragma endregion

#pragma region UFOs
	Sprite* ufo;
#pragma endregion

#pragma region SOUND
	FWDirectShow* _map1BackGroundSound;
	FWDirectShow* _map3BackGroundSound;
	FWDirectShow* _map5BackGroundSound;
	FWDirectShow* _playerDie;
	FWDirectShow* _playerLanding;
	FWDirectShow* _shoot_S;
	FWDirectShow* _shoot_L;
	FWDirectShow* _shoot_R;
	FWDirectShow* _wanning;
	FWDirectShow* _addLife;
	FWDirectShow* _collide_StaticObj;
	FWDirectShow* _title;
	FWDirectShow* _explode;
	FWDirectShow* _gameOver;
	FWDirectShow* _enemyDie;
	FWDirectShow* _clearState;

#pragma endregion
#pragma region weapon
	Sprite* capsules;
	Sprite* machine_gun;
	Sprite* spread_gun;
	Sprite* laser;
	Sprite* fireball_gun;
	Sprite* rapid_upgrade;
	Sprite* barrier;
	Sprite* sensor;
	Sprite* a_bomb;
#pragma endregion
#pragma region PLATFORM
	Sprite* platform;
#pragma endregion
#pragma region GUNNER
	Sprite* gunner;
#pragma endregion
	Sprite* boss3;
	Sprite* boss3_fire;
	Sprite* arm_body;
	Sprite* arm_hand;

#pragma region ARMOREDVEHICLE
	Sprite* _armor_R1;
	Sprite* _armor_R2;
	Sprite* _armor_R3;
	Sprite* _armor_B1;
	Sprite* _armor_B2;
	Sprite* _armor_B3;
	Sprite* _armor_Y1;
	Sprite* _armor_Y2;
	Sprite* _armor_Y3;
	Sprite* _armor_P1;
	Sprite* _armor_P2;
	Sprite* _armor_P3;
#pragma endregion

#pragma region ARTILLERY
	Sprite* _artillery;
#pragma endregion

public:
	void Init();
	static RSManager*  getInstance();
	//FWTexture* getTexture(TEXTURE_ID id);
	//FWSurface* getSurface(SURFACE_ID id);
	void playMusic(SOUND_ID id);
	Sprite* getSprite(SPRITE_ID id);
	RSManager(void);
	~RSManager(void);
};
#endif